package algorithms.leetcode;

/**
 * Description: 寻找数组的中心索引（找到数组的中间位置）
 * 解释1：给你一个下标从 0开始的整数数组nums，请你找到 最左边的中间位置middleIndex（也就是所有可能中间位置下标最小的一个）。
 * 中间位置middleIndex是满足nums[0] + nums[1] + ... + nums[middleIndex-1] == nums[middleIndex+1] + nums[middleIndex+2] + ... + nums[nums.length-1]的数组下标。
 * 如果middleIndex == 0，左边部分的和定义为 0。类似的，如果middleIndex == nums.length - 1，右边部分的和定义为0。
 * 请你返回满足上述条件 最左边的middleIndex，如果不存在这样的中间位置，请你返回-1。
 * *****************
 * 解释2：给你一个整数数组nums ，请计算数组的 中心下标 。
 * 数组 中心下标 是数组的一个下标，其左侧所有元素相加的和等于右侧所有元素相加的和。
 * 如果中心下标位于数组最左端，那么左侧数之和视为 0 ，因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。
 * 如果数组有多个中心下标，应该返回 最靠近左边 的那一个。如果数组不存在中心下标，返回 -1 。
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/find-the-middle-index-in-array
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 *
 * @date: 2022/10/23 20:36
 * @author: Huangjunjie
 * @since JDK 1.8
 */
public class Subject1991 {
    public static void main(String[] args) {
        int[] nums = new int[]{6, -5, 4, -4, 5};
        System.out.println(solution1(nums));
    }

    /**
     * 解法一:暴力解法
     *
     * @param nums []
     * @return int
     */
    public static int solution1(int[] nums) {
        for (int i = 0; i < nums.length; i++) {
            int leftCount = 0;
            int rightCount = 0;
            for (int j = 0; j < i; j++) {
                leftCount += nums[j];
            }
            for (int k = i + 1; k <= nums.length - 1; k++) {
                rightCount += nums[k];
            }
            if (leftCount == rightCount) {
                return i;
            }
        }
        return -1;
    }
}
